#include <stdio.h>
#include <string.h>

int main()
{
    int a[20001];//储存每一位所得到的数
    int temp,digit,n,i,j=0;//temp每次的得数   digit每次得数的位数
    a[0]=1;//从1开始乘
    digit=1;//位数从第一位开始
    while (scanf("%d",&n) != EOF) {
        for(i=2;i<=n;i++)
        {
            int num=0;
            for(j=0;j<digit;j++)
            {
                temp=a[j]*i+num;//将一个数的每一位数都分别乘以i，
                a[j]=temp%10;//将一个数的每一位数利用数组进行储存
                num=temp/10;
            }
            while(num)//判断退出循环后，num的值是否为0
            {
                a[digit]=num%10;//继续储存
                num=num/10;
                digit++;
            }
        }
        
        printf("has %d\n", digit);
        for(i=digit-1;i>=0;i--)//倒序输出每一位
            printf("%d",a[i]);
        printf("\n");
    }
    
    return 0;
}

//int main()
//{
//    int input = 0;
//    int array[10000] = {0};
//
//    printf("enter a big number: ");
//    while (scanf("%d", &input) != EOF) {
//        memset(array, 0, sizeof(array));
//        int index = 1;
//        array[0] = 1;
//
//        for (int i = 1; i <= input; i++) {
//            int carry = 0;
//
//            for (int j = 0; j <= index; j++) {
//                array[j] = array[j] * i + carry;
//                carry = array[j] / 10000;
//                array[j] = array[j] % 10000;
//            }
//
//            if (carry != 0) {
//                array[++index] = carry;
//            }
//        }
//
//        printf("has %d\n", index);
//        printf("%d", array[index]);
//        while (--index >= 0) {
//            printf("%04d", array[index]);
//        }
//
//        printf("\n");
//    }
//
//    return 0;
//}

//int main()
//{
//    int input = 0;
//    int array[10000] = {0};
//
//    while (scanf("%d", &input) != EOF) {
//        memset(array, 0, sizeof(array));
//        int index = 1;
//        array[0] = 1;
//
//        for (int i = 1; i <= input; i++) {
//            int carry = 0;
//
//            for (int j = 0; j <= index; j++) {
//                array[j] = array[j] * i + carry;
//                carry = array[j] / 10000;
//                array[j] = array[j] % 10000;
//            }
//
//            if (carry != 0) {
//                array[++index] = carry;
//            }
//        }
//
//        printf("%d", array[index]);
//        while (--index >= 0) {
//            printf("%04d", array[index]);
//        }
//        printf("\n");
//    }
//
//    return 0;
//}

